package com.scienview.platform.warn;

import java.io.IOException;


import com.scienview.core.Constants;
import com.scienview.core.anotation.Access;
import com.scienview.core.context.ContextHolder;
import com.scienview.platform.json.Json;

public class WarnHelper {
	public static void warn(Access access){
		if(ContextHolder.getContext().getHttpSession()==null||
				ContextHolder.getContext().getHttpSession().getAttribute(Constants.SESSION_USER)==null){
			if(ContextHolder.getContext().getRequest().getRequestURI().endsWith(".html")){
				Request.HTML.noUser("登录超时 请重新登录。");
			}else{
				Request.JSON.noUser("登录超时 请重新登录。");
			}
			
		}else{
			if(ContextHolder.getContext().getRequest().getRequestURI().endsWith(".html")){
				Request.HTML.noTask(access.task()+"权限未配置 请与管理员联系。");
			}else{
				Request.JSON.noTask(access.task()+"权限未配置 请与管理员联系。");
			}
		}
	}
	public static enum  Request implements Warn{
		
		HTML{
			
			public void noUser(String message){
				try {
					String contextPath=ContextHolder.getContext().getRequest().getContextPath();
					ContextHolder.getContext().getRequest().getSession().setAttribute(Warn.class.getName(), message);
					ContextHolder.getContext().getResponse().sendRedirect(contextPath+"/warn/warn.jsp");
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			public void noTask(String message){
				try {
					String contextPath=ContextHolder.getContext().getRequest().getContextPath();
					ContextHolder.getContext().getHttpSession().setAttribute(Warn.class.getName(), message);
					ContextHolder.getContext().getResponse().sendRedirect(contextPath+"/warn/warn.jsp");
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		},
		JSON{

			public void noUser(String message){
				message=message==null?"":message;
				message=message.equals("")?"登录超时 请重新登录。":message;
				Json json=new Json();
				json.setSuccess(false);
				json.setMessage(message);
				
				try {
					ContextHolder.getContext().getResponse().setContentType("application/json;charset=UTF-8");
					ContextHolder.getContext().getResponse().getWriter().write(json.toJson());
				} catch (IOException e) {
					e.printStackTrace();
				}
				
				
			}
			public void noTask(String message){
				message=message==null?"":message;
				Access access=ContextHolder.getContext().getHandler().getMethodAnnotation(Access.class);
				message=message.equals("")?"没有"+access.task()+"权限，请与管理员联系。":message;
				Json json=new Json();
				json.setSuccess(false);
				json.setMessage(message);
				try {
					ContextHolder.getContext().getResponse().setContentType("application/json;charset=UTF-8");
					ContextHolder.getContext().getResponse().getWriter().write(json.toJson());
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
		
	}
	
	
	
}

